package com.java.base.exercise.ddd;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * @Author RenPu
 * @Date 2022/3/29 19:19
 * @Version 1.0
 * @Description: DDD领域驱动模型，代码案例
 **/
public class DDD {

    /**失血模型**/

    //假如此服务是单独部署的Good服务

    @Data
    @NoArgsConstructor
    @AllArgsConstructor
    static class Good{
        String goodsId; //主键唯一标识
        String goodName;
        double goodPrice;
    }
    //假如此服务是单独部署为OrderItem服务
    static class OrderItem{
        String orderItemId; //主键唯一标识
        //Good good;  //1：缺陷每次都需要都需要跨服务获取good整个对象的数据进行组装
                      //2：假如Good服务因业务快速发展，Good增加了新字段，
                     // 同样OrderItem服务也需要做同步字段追加
                    //3: 低内聚，强耦合不灵活

        String goodsId;  //正确方式
    }


    /**贫血模型**/
    //假如Good的服务为Good表
    //使用jdbcTemplate方式查询数据时
    //例如：jdbcTemplate.excute(select * from Good where name=#{name}),
    // 因为在sql执行过程中Good对象没有参与

    /**充血模型**/
//    Good good=new Good();
//    good.setGoodName("Iphnnone");
//    good.setGoodPrice(0.5);


    /**涨血模型**/
//    Good good1=new Good("111","111",5.0);
//    good.setGoodName("Iphnnone");
//    good.setGoodPrice(0.5);




}
